package com.grq.framework.core.validate;

import cn.hutool.core.lang.Validator;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateValidate {

    /**
     *  检查日期字符串格式是否为yyyy-MM
     * @return
     */
    public static boolean checkDateAsYyyyMm(String str){
        return checkDate(str,"yyyy-MM",7);
    }

    /**
     *  检查日期字符串格式是否为yyyy-MM-dd
     * @return
     */
    public static boolean checkDateAsYyyyMmDd(String str){
        return checkDate(str,"yyyy-MM-dd",10);
    }

    /**
     *  检查日期字符串格式是否为yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static boolean checkDateAsYyyyMmDdHhMmSs(String str){
        return checkDate(str,"yyyy-MM-dd HH:mm:ss",19);
    }


    // 私有检查时间格式类
    private static boolean checkDate(String str,String format,int length){
        // 空字符串
        if (Validator.isEmpty(str)){
            return false;
        }

        // 长度
        if (str.length() != length){
            return false;
        }

        // 转换类
        SimpleDateFormat df = new SimpleDateFormat(format);
        df.setLenient(false);

        // 日期符合性转换
        try {
            Date dd = df.parse(str);
        } catch (ParseException e) {
            return false;
        }

        // 没问题返回true
        return true;
    }

}
